/*
 *
 * Copyright (C) 2008 Jose Javier García Zornoza.
 *
 * Este es un programa libre; puedes distribuirlo y/o modificarlo bajo
 * los términos de la versión 2 (o cualquier versión posterior) de la Licencia
 * Pública General de la Fundación de Software Libre.
 * Este programa se distribuye con la esperanza  de poder ser útil, pero sin
 * NINGUNA GARANTIA; tampoco la garantía implícita de COMERCIALIZACION o DEDICACIÓN
 * A UN PROPOSITO PARTICULAR. Ver la licencia GNU GPL para más detalles.
 * Deberías haber recibido una copia de la licencia GNU GPL con este programa;
 * en caso contrario puedes obtener una copia visitando el sitio web www.fsf.org
 * o escribiendo a la Fundación de Software Libre, Inc., 59 Temple
 * Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 */
package org.gruposp2p.dnie.xml.jaxb;

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import org.gruposp2p.dnie.model.SignedDocument;
import org.gruposp2p.dnie.utils.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author jj
 * 
 */
public class DocumentUnMarshaller {


    private static Logger logger =
            LoggerFactory.getLogger(DocumentUnMarshaller.class);
    
    public static Object unMarshallObject (File file) throws JAXBException {
        Object unMarshalledObject = null;
        JAXBContext jc = JAXBContext.newInstance("org.gruposp2p.dnie.xml.jaxb");
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unMarshalledObject =
                ((JAXBElement<?>) unmarshaller.unmarshal(file)).getValue();
        return unMarshalledObject;
    }

    public static Object unMarshallObject (String signedDocument) throws JAXBException {
        return unMarshallObject (
                FileUtils.getFileFromString(signedDocument));
    }

    public static SignedDocument unMarshallSignedDocument (File file) throws JAXBException {
        Object unMarshalledObject = null;
        JAXBContext jc = JAXBContext.newInstance("org.gruposp2p.dnie.xml.jaxb");
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setProperty(
                    "com.sun.xml.internal.bind.namespacePrefixMapper",
                    new NamespacePrefixMapperImpl());
        unMarshalledObject =
                ((JAXBElement<?>) unmarshaller.unmarshal(file)).getValue();
        return (SignedDocument)unMarshalledObject;
    }

    public static SignedDocument unMarshallSignedDocument (String signedDocument)
            throws JAXBException {
        return unMarshallSignedDocument (
                FileUtils.getFileFromString(signedDocument));
    }
}
